package com.aspose.cells;

class zbw {
   private static final byte[] a = new byte[]{-69, -1, -1, -70, -1, -1, -71, -128, 0, -66, 15, 0, -65, 15, 0};
   private byte[] b;

   public zbw(String var1) {
      if (var1 != null && var1.length() != 0) {
         if (var1.length() > 15) {
            throw new IllegalArgumentException("The password cannot be more than 15 characters.");
         } else {
            char[] var2 = var1.toCharArray();
            this.b = a(var2, b(var2));
         }
      } else {
         throw new IllegalArgumentException("The password cannot be null or empty.");
      }
   }

   public byte[] a(byte[] var1, int var2, short var3) {
      byte var4 = (byte)(var2 + var3 & 15);
      byte[] var5 = new byte[var3];

      for(int var6 = 0; var6 < var3; ++var6) {
         byte var7 = (byte)(var1[var6] ^ this.b[var4]);
         byte var8 = (byte)(var7 << 5);
         var7 = (byte)(var7 >>> 3 & 31);
         var7 |= var8;
         var5[var6] = var7;
         var4 = (byte)(var4 + 1 & 15);
      }

      return var5;
   }

   public byte[] b(byte[] var1, int var2, short var3) {
      byte var4 = (byte)(var2 + var3 & 15);
      byte[] var5 = new byte[var3];

      for(int var6 = 0; var6 < var3; ++var6) {
         byte var7 = var1[var6];
         byte var8 = (byte)(var7 >>> 5 & 7);
         var7 = (byte)(var7 << 3);
         var7 |= var8;
         var5[var6] = (byte)(var7 ^ this.b[var4]);
         var4 = (byte)(var4 + 1 & 15);
      }

      return var5;
   }

   public static boolean a(String var0, int var1, int var2) {
      char[] var3 = var0.toCharArray();
      return a(var3) == var1 && b(var3) == var2;
   }

   public static int a(String var0) {
      return a(var0.toCharArray());
   }

   public static int a(char[] var0) {
      char var1 = 0;

      char var3;
      for(int var2 = 0; var2 < var0.length; var1 ^= var3) {
         var3 = var0[var2];
         ++var2;
         int var4 = var3 & '耀';
         int var5 = var2 % 15;
         var3 = (char)(var3 & 32767);
         int var6 = var3 >> 15 - var5;
         var3 = (char)(var3 << var5);
         var3 = (char)(var3 | var6);
         var3 = (char)(var3 & 32767);
         var3 = (char)(var3 | var4);
      }

      return var1 ^ var0.length ^ '칋';
   }

   public static int b(String var0) {
      return b(var0.toCharArray());
   }

   public static int b(char[] var0) {
      char var1 = 0;
      char var2 = '耀';
      char var3 = '\uffff';
      int var4 = var0.length;

      for(int var5 = 0; var5 < var4; ++var5) {
         char var6 = var0[var4 - 1 - var5];
         int var9 = var6 & 127;

         for(int var7 = 0; var7 < 8; ++var7) {
            int var8 = var2 >> 15;
            var2 = (char)(var2 << 1);
            var2 = (char)(var2 | var8);
            if (var8 != 0) {
               var2 = (char)(var2 ^ 4128);
            }

            var8 = var3 >> 15;
            var3 = (char)(var3 << 1);
            var3 = (char)(var3 | var8);
            if (var8 != 0) {
               var3 = (char)(var3 ^ 4128);
            }

            if ((var9 & 1 << var7) != 0) {
               var1 ^= var2;
            }
         }
      }

      return var1 ^ var3;
   }

   private static byte[] a(char[] var0, int var1) {
      byte[] var2 = new byte[16];

      int var3;
      for(var3 = 0; var3 < var0.length; ++var3) {
         var2[var3] = (byte)var0[var3];
      }

      for(var3 = var0.length; var3 < 16; ++var3) {
         var2[var3] = a[var3 - var0.length];
      }

      byte var7 = (byte)var1;
      byte var4 = (byte)(var1 >> 8);

      int var5;
      for(var5 = 0; var5 < 16; var5 += 2) {
         var2[var5] ^= var7;
         var2[var5 + 1] ^= var4;
      }

      for(var5 = 0; var5 < var2.length; ++var5) {
         byte var6 = (byte)(var2[var5] >>> 6 & 3);
         var2[var5] = (byte)(var2[var5] << 2);
         var2[var5] |= var6;
      }

      return var2;
   }
}
